# @Author   : 懒羊羊
# @File     : day04.py
# @Time     : 2024/11/28 10:02

"""

复习
三元赋值：  c=a if a>b else b
生成新列表的方式：列表推导式
三种：
l=[值 for i in 范围]
l=[值 for i in 范围 if 条件]
l=[值1 if 条件 else 值2  for i in 范围]

定义函数：def
函数的命名规则：数字字母下划线组成，非数字开头  小驼峰
参数：必填参数（位置参数），选填参数，不定长元组（*）  不定长字典（**）、函数名
无返回值时默认返回none ，由返回值（return）
函数中调用其他函数：函数的嵌套
函数中调用自己：函数的递归
函数中定义一个其他函数，且返回该函数名：：：闭包
闭包的目的：保护内部函数名

装饰器：作用： 无需修改原始代码，就能在函数调用时增加新功能（打补丁）
装饰器的原理：在需要装饰的函数头上加上语法糖+装饰器的名称
0在函数调用的过程中，
1.判断该函数的头上是否由语法糖
2.有则调用该装饰器，同时将该函数作为参数传入
3.调用该装饰器之后会得到一个内部函数名，
4.调用内部函数，执行内部函数内容
5.执行内部函数时有装饰类的语句及始函数的执行
实现装饰

"""


# 定义类 class  命名：大驼峰

class Cat:
    # 属性
    color = "蓝色"
    legs = 4
    ears = 2
    eyes = 2
    pz = None

    # 私有属性，子类不能继承
    _mytime = 88

    def __init__(self, pz):
        self.pz = pz
        # self.eatFish()

    # 行为
    # 类函数：方法
    def eatFish(self):
        print(f"{self.color}{self.pz}吃鱼")

    def getMouse(self):
        print("抓老鼠")


# 类的实例化
# cat = Cat("蓝色", "波斯猫")
# print(cat.color, cat.pz)

class CatJiaFeiMao(Cat):    # 继承Cat类
    pz = "加菲猫"
    color = "紫色"

    def gethostlike(self):
        print("比较抢手")

    def eatFish(self):
        print("我可以吃泥鳅")


if __name__ == '__main__':

    catj = CatJiaFeiMao("加菲猫")
    catj.gethostlike()
    catj.eatFish()
